/*
    3D Office Environment
    Copyright (C) 2011  Till Merker

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

#ifndef BSPOFFICESCENE_H
#define BSPOFFICESCENE_H

#include <Ogre.h>
#include "BaseOfficeScene.h"

using namespace Ogre;

namespace OfficeEnv {

class BSPOfficeScene : public BaseOfficeScene {
    private:	
	/* Ray query for ground + collision detection */
	RaySceneQuery *mRaySceneQuery;	
	
	/* Temporarily hold esktop position/orientation during the loading process */
	Vector3 mDesktopPosition[MAX_DESKTOPS];
 	Quaternion mDesktopOrientation[MAX_DESKTOPS];
    protected:
	virtual SceneManager *createSceneManager();
	virtual void loadScene(String sceneFile);	
	virtual void getDesktopEntity(int desktopIndex, SceneNode **node, Entity **entity);
	virtual Vector3 getUpVector();    
	virtual void moveTo(Vector3 dest);
	virtual void glueToGround(Vector3 &pos);
	virtual void getPitchLimits(Radian &minPitch, Radian &maxPitch);	
};

}

#endif